<?php 

# -- DÉBUT NOTE DE LICENCE -------------------------------------
#
# Ce fichier fait partie de Clicpage.
#
# Copyright (c) 2010 Francois (www.clicpage.net)
# Distribué selon les termes de la licence GPL version 2.0.
# Consultez le fichier LICENCE ou
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
# -- FIN NOTE DE LICENCE ---------------------------------------

if (!($_s instanceof dbStruct)) {
	throw new Exception('No valid schema object');
}

/* Tables
-------------------------------------------------------- */
$_s->categories
	->cat_id		('bigint',	0,		false)
	->parent_cat_id	('bigint',	0, 		false)
	->cat_url		('varchar',	255,	false)
	->cat_titre		('varchar',	255,	false)
	->home_page_id	('bigint',	0,		true)
	
	->primary('pk_categories', 'cat_id')
	;
	

$_s->pub_pages
	->page_id				('bigint',		0,	false)
	->cat_id				('bigint',		0,	false)
	->page_generateur		('varchar',		25,	false)
	->page_theme			('varchar',		25,	false)
	->page_statut			('smallint',	0,	false)
	->page_modifiee			('smallint',	0,	false)
	->page_langue			('varchar',		5,	false)
	->page_url				('varchar',		255,false)
	->page_titre			('varchar',		255,false)
	->page_entete			('text',		0,	true)
	->page_entete_xhtml		('text',		0,	true)
	->page_contenu			('text',		0,	false)
	->page_contenu_xhtml	('text',		0,	false)
	->page_options			('text',		0,	false)
	->page_commentaires		('smallint',	0,	false)
	->page_acces			('smallint',	0,	false)
	->page_acces_details	('varchar',		60,	true)
	->page_date				('timestamp',	0,	false,	'now()')
	->page_date_modification('timestamp',	0,	false,	'now()')
	->utilisateur_id		('bigint',		0,	false)
	->modification_utilisateur_id('bigint',	0,	false)
	->page_mots				('text',		0,	false)
	
	->primary('pk_pub_pages','page_id')
	;
	
$_s->temp_pages
	->page_id				('bigint',		0,	false)
	->cat_id				('bigint',		0,	false)
	->page_generateur		('varchar',		25,	false)
	->page_theme			('varchar',		25,	false)
	->page_statut			('smallint',	0,	false)
	->page_modifiee			('smallint',	0,	false)
	->page_langue			('varchar',		4,	false)
	->page_url				('varchar',		255,false)
	->page_titre			('varchar',		255,false)
	->page_entete			('text',		0,	true)
	->page_entete_xhtml		('text',		0,	true)
	->page_contenu			('text',		0,	false)
	->page_contenu_xhtml	('text',		0,	false)
	->page_options			('text',		0,	false)
	->page_commentaires		('smallint',	0,	false)
	->page_acces			('smallint',	0,	false)
	->page_acces_details	('varchar',		60,	true)
	->page_date				('timestamp',	0,	false,	'now()')
	->page_date_modification('timestamp',	0,	false,	'now()')
	->utilisateur_id		('bigint',		0,	false)
	->modification_utilisateur_id('bigint',	0,	false)
	->page_mots				('text',		0,	false)
	
	->primary('pk_temp_pages','page_id')
	;
	
$_s->tags
	->tag_texte				('varchar',		255,	false)
	->page_id				('bigint',		0,	false)
	;
	
$_s->commentaires
	->commentaire_id		('bigint',		0, 	false)
	->page_id				('bigint',		0,	false)
	->commentaire_contexte	('smallint',	0,	false)
	->commentaire_statut	('smallint',	0,	false)
	->utilisateur_id		('bigint',		0,	true)
	->commentaire_ip		('varchar',		39,	true,	null)
	->commentaire_auteur	('varchar',		255,false)
	->commentaire_email		('varchar',		255,true,	null)
	->commentaire_titre		('varchar',		255,true,	null)
	->commentaire_contenu	('text',		0,	true)
	->commentaire_date		('timestamp',	0,	false,	'now()')
	->commentaire_spam		('varchar',		255,true,	null)
	
	->primary('pk_commentaires','commentaire_id')
	;
	
$_s->medias
	->media_id				('bigint',		0,	false)
	->media_dossier			('varchar',		255,false)
	->media_fichier			('varchar',		255,false)
	->media_type			('varchar',		255,false)
	->media_titre			('varchar',		255,false)
	->media_description		('text',		0,	true)
	->media_date_creation	('timestamp',	0,	false,	'now()')
	->media_date_modification('timestamp',	0,	false,	'now()')
	->utilisateur_id		('bigint',		0,	false)
	
	->primary('pk_media_id','media_id')
	;
	
$_s->pages_medias
	->media_id				('bigint',		0,	false)
	->page_id				('bigint',		0,	false)
	->page_media_taille		('smallint',	0,	false)
	->page_media_statut		('smallint',	0,	false)
	;
	
$_s->gadgets
	->gadget_inst_id		('bigint',		0,	false)
	->theme_id				('varchar',		25,	false)
	->zone_id				('varchar',		25,	false)
	->gadget_id				('varchar',		25,	false)
	->gadget_inst_conditions('text',		0,	false)
	->gadget_inst_titre		('varchar',		255,true)
	->gadget_inst_data		('text',		0,	true)
	
	->primary('pk_gadgets','gadget_inst_id')
	;
		
$_s->groupes_utilisateurs
	->groupe_id				('smallint',	0,	false)
	->groupe_nom			('varchar',		255,false)
	->groupe_permissions	('text',		0,	false)
	
	->primary('pk_groupes_utilisateurs','groupe_id')
	;	

$_s->utilisateurs
	->utilisateur_id		('bigint',		0,	false)
	->utilisateur_superadmin('smallint',	0,	false)
	->groupe_id				('smallint',	0,	false)
	->utilisateur_login		('varchar',		64,	false)
	->utilisateur_mot_de_passe('varchar',	40,	false)
	->utilisateur_prenom	('varchar',		255,true,	null)
	->utilisateur_nom		('varchar',		255,true,	null)
	->utilisateur_pseudo	('varchar',		255,false)
	->utilisateur_email		('varchar',		255,true,	null)
	->utilisateur_langue	('varchar',		5,	false)
	->utilisateur_preferences('text',		0,	true,	null)
	->utilisateur_statut	('smallint',	0,	false)
	->utilisateur_cle		('text',		0,	true,	null)
	->utilisateur_date		('timestamp', 	0,	false, 'now()')
	->utilisateur_date_modification	('timestamp', 	0,	false, 'now()')
	
	->primary('pk_utilisateurs','utilisateur_id')
	;
	
$_s->regles_antispam
	->regle_id				('bigint',		0,	false)
	->regle_nom				('varchar',		25,	false)
	->regle_valeur			('varchar',		255,false)
	
	->primary('pk_regles_antispam','regle_id')
	;
	
$_s->session
	->ses_id				('varchar',		40,	false)
	->ses_time				('integer',		0,	false,	0)
	->ses_start				('text',		0,	false)
	->ses_value				('text',		0,	false)
	
	->primary('pk_session','ses_id')
	;	

$_s->site
	->propriete				('varchar',		64,	false)
	->module				('varchar',		64,	false)
	->valeur				('text',		0,	false)
	
	->unique('uk_site','propriete')
	;
	
$_s->version
	->composant				('varchar',		32,	false)
	->type					('varchar',		32,	false)
	->version				('varchar',		32,	false)
	
	->unique('uk_version','composant','type')
	;
	
	
/* References indexes
-------------------------------------------------------- */

$_s->pub_pages->index	('idx_pub_pages_cat_id',			'btree',	'cat_id');
$_s->temp_pages->index	('idx_temp_pages_cat_id',			'btree',	'cat_id');

$_s->pub_pages->index	('idx_pub_pages_utilisateur',		'btree',	'utilisateur_id');
$_s->temp_pages->index	('idx_temp_pages_utilisateur',		'btree',	'utilisateur_id');
$_s->pub_pages->index	('idx_pub_pages_modutilisateur',	'btree',	'modification_utilisateur_id');
$_s->temp_pages->index	('idx_temp_pages_modutilisateur',	'btree',	'modification_utilisateur_id');

$_s->medias->index		('idx_pub_medias_utilisateur',		'btree',	'utilisateur_id');

$_s->pages_medias->index('idx_media_id',					'btree',	'media_id');
$_s->pages_medias->index('idx_page_id',						'btree',	'page_id');

$_s->commentaires->index('idx_pub_commentaires_page',		'btree',	'page_id');

$_s->utilisateurs->index('idx_groupe_utilisateurs',			'btree',	'groupe_id');

/* Performance indexes
-------------------------------------------------------- */

$_s->pub_pages->index	('idx_pub_pages_url',				'btree',	'page_url','page_statut');

/* Foreign keys
-------------------------------------------------------- */

# Catégories
$_s->pub_pages->reference('fk_pub_pages_cat','cat_id','categories','cat_id','cascade','cascade');
$_s->temp_pages->reference('fk_temp_pages_cat','cat_id','categories','cat_id','cascade','cascade');

# Pages
$_s->pages_medias->reference('fk_pages_medias_page','page_id','pub_pages','page_id','cascade','cascade');

# Médias
$_s->pages_medias->reference('fk_pages_medias_media','media_id','medias','media_id','cascade','cascade');

# Tags
$_s->tags->reference('fk_tags_page_id','page_id','pub_pages','page_id','cascade','cascade');

# Utilisateurs
$_s->pub_pages->reference('fk_pub_pages_utilisateur','utilisateur_id','utilisateurs','utilisateur_id','cascade','cascade');
$_s->temp_pages->reference('fk_temp_pages_utilisateur','utilisateur_id','utilisateurs','utilisateur_id','cascade','cascade');
$_s->pub_pages->reference('fk_pub_pages_modutilisateur','modification_utilisateur_id','utilisateurs','utilisateur_id','cascade','cascade');
$_s->temp_pages->reference('fk_temp_pages_modutilisateur','modification_utilisateur_id','utilisateurs','utilisateur_id','cascade','cascade');

$_s->medias->reference('fk_medias_utilisateur','utilisateur_id','utilisateurs','utilisateur_id','cascade','cascade');

$_s->commentaires->reference('fk_commentaires_page','page_id','pub_pages','page_id','cascade','cascade');

# Groupes utilisateurs
$_s->utilisateurs->reference('fk_groupe_utilisateurs','groupe_id','groupes_utilisateurs','groupe_id','cascade','cascade');

?>